/* 
 * File:   LambertianShader.h
 * Author: brady
 *
 * Created on February 8, 2011, 11:10 AM
 */

#include "Shader.h"

#ifndef LAMBERTIANSHADER_H
#define	LAMBERTIANSHADER_H


class LambertianShader : public Shader {
public:
    LambertianShader();
    LambertianShader(const LambertianShader& orig);
    LambertianShader(double r, double g, double b);
    virtual ~LambertianShader();
    void SetColor(double r, double g, double b);
    void SetColor(Vector3D color);
    double GetAmbientCoeff(){return AmbientCoefficient;}
    void SetAmbientCoeff(double ac){AmbientCoefficient = ac;}
    Vector3D Shade(Ray &viewingRay, HitStruct& hitStruct, Scene* scene);
protected:
    double GetShadowCoeffecient(Vector3D &normal, Vector3D &toLight);
    Vector3D ComputeLighting(Ray &hitRay, Vector3D &normal, Scene* scene);
    double AmbientCoefficient;
};

#endif	/* LAMBERTIANSHADER_H */

